const { DATE_FORMAT_DEFAULT } = require('@/constant');

/**
 * 格式化时间格式
 * @param {Date|Number|String} date 日期 默认值 new Date()
 * @param {String} fmtStr 格式化文本 默认值为 YYYY-MM-DD HH:mm:ss
 * @return {String} 格式化后的数据
 */
module.exports = function format(date = new Date(), fmtStr = DATE_FORMAT_DEFAULT) {
  if (date.constructor !== Date) date = new Date(date);
  const opt = {
    'y+': date.getFullYear().toString(), // 年
    'M+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'm+': date.getMinutes().toString(), // 分
    's+': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };
  Object.keys(opt).forEach(k => {
    if (Object.prototype.hasOwnProperty.call(opt, k)) {
      const ret = new RegExp(`(${k})`).exec(fmtStr);
      if (ret) {
        fmtStr = fmtStr.replace(
          ret[1],
          ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
        );
      }
    }
  });
  return fmtStr;
};
